<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script type="text/javascript">
        /**
         *获取全局对象
         * web：   window，self，frames，this
         * node:   global 
         * worker: self
         * 通用：globalThis
         */

        //  谁调用函数 this就指向谁
        // function test() {
        //     'use strict'
        //     return this;
        // }
        // console.log(test()); // undefined
        // console.log(window.test()); // window
        /* 
         类的本质是函数   
        */
        //    类
        class Father {
            constructor() {
                // new -> this -> {} -> age属性
                this.age = 22;
            }
            swim() {
                console.log('Go Swimming!!!');
            }
        }
        // 继承
        class Son extends Father {
            // 子类中有constructor就必须执行super继承父类的constructor
            constructor(){
                // super 调用父类上的constructor
                super(); // super() 必须先执行  实例化父类 
                this.name = '张三';
            }
            study() {
                console.log(this); // 在this的__proto__原型链上找swim方法 找到为止
                this.swim();
            }
        }
        const son = new Son();
        son.study();
    </script>
</body>

</html>